<template>
  <div class="audition139">
    <p>1. 回调函数callback</p>
    <code class="code">
      function fn1(cb) {<br />
        <span class="indient">cb(1)</span><br />
      }<br />
      function fn2(x) {<br />
        <span class="indient">alert(x)</span><br />
      }<br />
      fn1(fn2)
    </code>
    <p>callback解决了异步问题，但是多个调用，容易造成回调地狱的问题</p>
    <p>2. promise</p>
    <p>promise有三种状态,pending , fullfilled , rejected</p>
    <p>可以结合then和catch获取数据、捕获错误</p>
    <p>但是promise无法取消，状态也无法反应到外部</p>
    <p>3. Generator迭代器</p>
    <p>函数名前加<span class="color">*</span>符号，在函数内部使用<span class="color">yield</span>语句</p>
    <p>没有了promise的一堆then，看起来更像是同步操作，更直观</p>
    <p>但是不能自动执行异步操作，需要写多个next()，需要配合使用Thunk函数和Co模块才能做到自动执行</p>
    <p>4. async / await</p>
    <p>async加在function前面，得到的是一个promise对象</p>
    <p>内置执行器，比Generator操作更简单。</p>
    <p>不过获取数据和捕获错误，需要搭配try / catch使用</p>
  </div>
</template>

<script>
export default {
  name: 'Audition139'
}
</script>

<style>

</style>